package net.capgemini.bill.gaty.expressionarithmetique.web.enums;


public enum RequestType {
	
      deriver(FonctionType.BINAIRE,String.class,String.class,"deriver"),

	 evaluer(FonctionType.BINAIRE,String.class, String.class,"evaluer"),

	 valider(FonctionType.UNAIRE,String.class,"valider"),

	 validerAvecException(FonctionType.UNAIRE,String.class,"validerAvecException"),

	 supportedFunctions(FonctionType.NOPAREMETER,"supportedFunctions");
      private final FonctionType type;
     private final Class firstArgType;
     private final Class secondArgType;
     private final String functionName;
	private RequestType(FonctionType type, Class firstArgType,
			Class secondArgType, String functionName) {
		this.type = type;
		this.firstArgType = firstArgType;
		this.secondArgType = secondArgType;
		this.functionName = functionName;
	}
	
	private RequestType(FonctionType type, String functionName) {
		this.type = type;
		this.functionName = functionName;
		this.firstArgType = null;
		this.secondArgType = null;
	}

	private RequestType(FonctionType type, Class firstArgType,
			String functionName) {
		this.type = type;
		this.firstArgType = firstArgType;
		this.secondArgType = null;
		this.functionName = functionName;
	}

	public FonctionType getType() {
		return type;
	}
	public Class getFirstArgType() {
		return firstArgType;
	}
	public Class getSecondArgType() {
		return secondArgType;
	}
	public String getFunctionName() {
		return functionName;
	}
	
  	 
}
